<?php
$web_root_path = substr($_SERVER['SCRIPT_FILENAME'] ,0 , -strlen($_SERVER['SCRIPT_NAME']));
require_once($web_root_path . "/lib/DbWrapper.class.php");
require_once($web_root_path . "/libs/myUtil.class.php");


class MySubmitUtil{

    //フォームから受け取ったデータが入る変数部
    protected $content;
    protected $nickname;
    protected $url;
    protected $photo;
    protected $category_id;

    function getDataFromFrom(){
        $this->content = $_POST["content"];
        $this->nickname = $_POST["nickname"];
        $this->url = $_POST["url"];
        $this->category_id = $_POST["category_id"];
        $this->photo = $_FILES["photo"];
    }

    function submitPageCheck(){
        //<!--↓↓↓↓↓セッションIDを書き換える部分↓↓↓↓↓-->
        if($_SESSION["submit_id"] != $_POST["session_id"]) {
            header("Location:http://shonanbbs/index.php");
            return false;//exitはソースにはあまり使われない
        }
        else{
            //何度も投稿できないようにセッションIDを書き換える
            //再度読み込みすると書き換わったセッションによって
            session_regenerate_id();
            $_SESSION["submit_id"] = session_id();
            return true;
            //←セッションIDを取得する関数
            //<!--↑↑↑↑↑セッションIDを書き換える部分↑↑↑↑↑-->
        }
    }


    function checkErrorFromFrom(){
        //retrun用の配列「$rtn」を作成
        $rtn = array();

        //エラーフラグ
        $error_yn ="n";//エラーがあるかどうか
        $nickname_error_yn = "n";//ニックネームが入ってるか
        $content_error_yn = "n";//内容が入ってるか
        $content_worderror_yn = "n";//

        //エラーチェック
        if ($this->nickname == ""){
            $nickname_error_yn = "y";
            $error_yn = "y";
        }
        if ($this->content == ""){
            $content_error_yn = "y";
            $error_yn = "y";
        }
        //strpos関数は、最初に見つかった位置を返す
        //一番最初に該当する文字があった場合「0番目」となるので、
        //falseと!==で比較して、0と区別します
        if (strpos($this->content, "NGワード") !== false){
            $content_worderror_yn = "y";
            $error_yn = "y";
        }
        $rtn["error_yn"] = $error_yn;
        $rtn["nickname_error_yn"] = $nickname_error_yn;
        $rtn["content_error_yn"] = $content_error_yn;
        $rtn["content_worderror_yn"] = $content_worderror_yn;

        $this->error_arr = $rtn;
    }

    function insertDataToDb(){
        //エラーがなかったらデータベースにデータを挿入
        if ($this->error_arr["error_yn"] == "n") {
            //mysqlに接続する
            DbWrapper::dbChoice();

            //commentテーブルをロックする
            $sql = "LOCK TABLE comment WRITE";
            $result = mysql_query($sql);

            //クエリを送信する
            $sql = "INSERT INTO comment (nickname, content, category_id, url, created_at)values ('" .
            $this->nickname ."','".
            $this->content ."','".
            $this->category_id ."','".
            $this->url . "','" .
            date("Y-m-d H:i:s")."')";

            $result = mysql_query($sql);

            //最後にinsertした行のIDを取得する
            $sql = "SELECT id FROM comment ORDER BY id DESC";
            $result = mysql_query($sql);
            $row = mysql_fetch_row($result);

            //commentテーブルのロックを解除する
            $sql = "UNLOCK TABLES";
            $result = mysql_query($sql);

            //画像データを保存する
            if (is_uploaded_file($this->photo["tmp_name"])) {
                $ext = myUtil::getFileExt($this->photo["tmp_name"]);
                move_uploaded_file($this->photo["tmp_name"],"./img/".$row[0].
                $ext);
                $sql = "UPDATE comment SET photo = \"".$row[0].
                $ext."\"
                WHERE id = ".$row[0];
                mysql_query($sql);
            }
        }
    }
    function getMessage(){
        $rtn = "";
        if ($this->error_arr["error_yn"] == "y") {
            $rtn .= "エラーがあります。<br>";
            if($this->error_arr["nickname_error_yn"] == "y") {
                $rtn .= "ニックネームが入力されていません<br>";
            }
            if($this->error_arr["content_error_yn"] == "y") {
                $rtn .= "内容の入力がされていません<br>";
            }
            if($this->error_arr["content_worderror_yn"] == "y") {
                $rtn .= "不適切な文字が含まれています<br>";
            }
        } else {
            $rtn .= "投稿が完了しました";
        }
        return $rtn;
    }
    //スタティックな関数からはメンバ変数にアクセスできない
    public static function getTokokanryou(){
        //selfの部分がparent::だと親クラスの関数を参照する
        return self::getTest();
    }
    public static function getTest(){
        return "テスト投稿";
    }

}
